package com.anti.modular.owner.ownerlease.param;

import com.anti.commom.pojo.BaseParam;
import com.anti.modular.owner.ownerlease.entity.BusFile;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
* 業主租約参数类
 *
 * @author anti
 * @date 2021-05-20 14:23:14
*/
@Data
public class OwnerLeaseParam extends BaseParam {

    /**
     * 主键id
     */
    @NotNull(message = "主键id不能为空，请检查id参数", groups = {edit.class, delete.class, detail.class,editXuZu.class,editTuiZu.class})
    private Long id;

    /**
     * 業主名稱
     */
    @NotBlank(message = "業主名稱不能为空，请检查name参数", groups = {add.class, edit.class})
    private String name;

    /**
     * 房间名
     */
    private String roomName;

    /**
     * 手機號
     */
    @NotBlank(message = "手機號不能为空，请检查phone参数", groups = {add.class, edit.class})
    private String phone;

    /**
     * 相冊
     */
    private String images;

    /**
     * 租期开始时间
     */
    @NotNull(message = "租期开始时间不能为空，请检查rentStartDate参数", groups = {add.class, edit.class,editXuZu.class})
    private String rentStartDate;

    /**
     * 租期结束时间
     */
    @NotNull(message = "租期结束时间不能为空，请检查rentEndDate参数", groups = {add.class, edit.class,editXuZu.class})
    private String rentEndDate;

    /**
     * 交租週期
     */
    private String receiptCycle;

    /**
     * 付
     */
    @NotNull(message = "付不能为空，请检查receiptFu参数", groups = {add.class, edit.class})
    private Integer receiptFu;

    /**
     * 押
     */
    @NotNull(message = "押不能为空，请检查receiptYa参数", groups = {add.class, edit.class})
    private Integer receiptYa;

    /**
     * 依据
     */
    @NotNull(message = "依据不能为空，请检查receiptYj参数", groups = {add.class, edit.class})
    private Integer receiptYj;

    /**
     * 租金
     */
    @NotNull(message = "租金不能为空，请检查rent参数", groups = {add.class, edit.class})
    private BigDecimal rent;

    /**
     * 押金
     */
    @NotNull(message = "押金不能为空，请检查deposit参数", groups = {add.class, edit.class})
    private BigDecimal deposit;

    /**
     * 账单起始日（0 起租日 1日，2日......） 默认为起租日
     */
    @NotNull(message = "账单起始日（0 起租日 1日，2日......） 默认为起租日不能为空，请检查billStart参数", groups = {add.class, edit.class})
    private Integer billStart;

    /**
     * 账单收租日提前几日
     */
    @NotNull(message = "账单收租日提前几日不能为空，请检查billEndTqData参数", groups = {add.class, edit.class})
    private Integer billEndTqData;

    /**
     * 賬號類型 
     */
    private Integer accountType;

    /**
     * 持卡人
     */
    private String cardHolder;

    /**
     * 卡号
     */
    private String cardNumber;

    /**
     * 开户银行
     */
    private Integer cardBankType;

    /**
     * 账号
     */
    private String account;

    /**
     * 收款人
     */
    private String payee;

    /**
     * 收租提醒开关
     */
    @NotNull(message = "收租提醒开关不能为空，请检查rentReminderSwitch参数", groups = {add.class, edit.class})
    private Integer rentReminderSwitch;

    /**
     * 收租提醒提前 天
     */
    private Integer rentReminderDay;

    /**
     * 收租提醒提前 时
     */
    private Integer rentReminderHour;

    /**
     * 收租提醒提前 分钟
     */
    private Integer rentReminderMinutes;

    /**
     * 备注
     */
    private String remark;

    /**
     * 租约状态
     */
    private Integer leaseStatus;

    /**
     * 退租日期
     */

    @NotNull(message = "退租日期不能为空，请检查retrieveDate参数", groups = {editTuiZu.class})
    private String retrieveDate;

    /**
     * 退租操作人
     */
    private Long retrieveUser;

    /**
     * 状态（字典 0正常 1注銷 2刪除）
     */
    private Integer status;


    private Integer type;

    /**
     * 簽約房間
     */
    private List<OwerRoom> roomList=new ArrayList<>();

    /**
     * 相冊
     */
    private List<BusFile> files=new ArrayList<>();
    /**
     * 固定費用
     */
    private List<OwerGdfy> gdfy=new ArrayList<>();

    /**
     * 参数校验分组：编辑
     */
    public @interface editXuZu {
    }

    public @interface editTuiZu {
    }

    /**
     * 搜索类型
     */
    private String searchType;
}
